﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="ISubjectGroupsViewModel.cs" company="ELEN 7045 GROUP II">
//   Contributed by E.Vosloo
// </copyright>
// <summary>
//   The i subject groups view model.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace Presentation.Module.StudyDefinition.Interfaces.ViewModels
{
    #region

    using System.Windows.Input;

    using Presentation.Module.StudyDefinition.Interfaces.Views;
    using Presentation.Module.StudyDefinition.Models;

    #endregion

    /// <summary>
    /// The i subject groups view model.
    /// </summary>
    public interface ISubjectGroupsViewModel
    {
        #region Properties

        /// <summary>
        /// Gets AddSubjectGroup.
        /// </summary>
        ICommand AddSubjectGroup { get; }

        /// <summary>
        /// Gets EditSubjectGroup.
        /// </summary>
        ICommand EditSubjectGroup { get; }

        /// <summary>
        /// Gets RemoveSubjectGroup.
        /// </summary>
        ICommand RemoveSubjectGroup { get; }

        /// <summary>
        /// Gets or sets View.
        /// </summary>
        ISubjectGroupsView View { get; set; }

        #endregion

        #region Public Methods

        /// <summary>
        /// The initialize.
        /// </summary>
        void Initialize();

        /// <summary>
        /// The on add subject group.
        /// </summary>
        void OnAddSubjectGroup();

        /// <summary>
        /// The on edit subject group.
        /// </summary>
        /// <param name="subjectGroup">
        /// The subject group.
        /// </param>
        void OnEditSubjectGroup(SubjectGroup subjectGroup);

        /// <summary>
        /// The on remove subject group.
        /// </summary>
        /// <param name="subjectGroup">
        /// The subject group.
        /// </param>
        void OnRemoveSubjectGroup(SubjectGroup subjectGroup);

        #endregion
    }
}
